package com.tech.mapper;

import com.tech.repository.entity.Port;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface PortDao {
	/**
	 * 通过ID查找公告
	 *
	 * @param id 要查找公告的所属ID
	 * @return 找到就返回，否则返回null
	 */
	Port getPort(int id);

	/**
	 * 获取所有公告
	 *
	 * @return 所有公告信息
	 */
	List<Port> getAllPorts();

	/**
	 * 获取最近的公告信息
	 *
	 * @return 创建时间最晚的公告信息
	 */
	Port getRecentPort();

	/**
	 * 获取最近创建的 count 个公告
	 *
	 * @param count 公告数量
	 */
	@Select(" select * from portinfo order by ncreatetime desc limit 0,#{count}")
	List<Port> getRecentPorts(@Param("count") int count);

	/**
	 * 添加新的公告信息
	 *
	 * @param port 新的公告信息
	 * @return 新公告所属ID
	 */
	int addPort(Port port);

	/**
	 * 添加新的公告信息
	 *
	 * @param portList 公告列表
	 * @return 影响的行数
	 */
	int[] addPorts(List<Port> portList);

	/**
	 * 根据ID删除指定公告
	 *
	 * @param id 要删除公告的ID
	 * @return 是否删除成功，不存在时返回false
	 */
	boolean delPort(int id);

	/**
	 * 根据ID批量删除公告
	 *
	 * @param portsList 要删除公告的ID列表
	 * @return 影响到的行数
	 */
	int[] delPorts(List<Integer> portsList);

	/**
	 * 删除所有公告
	 *
	 * @return 如果公告数据改变就返回true
	 */
	boolean delAllPorts();
}
